home *** CD-ROM | disk | FTP | other *** search
-
- PLR1_mouse_control
- jsr ReadMouse
- jsr PLR1_alwayskeys
- move.l #SineTable,a0
- move.w PLR1s_angspd,d1
- move.w angpos,d0
- and.w #8190,d0
- move.w d0,PLR1s_angpos
- move.w (a0,d0.w),PLR1s_sinval
- adda.w #2048,a0
- move.w (a0,d0.w),PLR1s_cosval
-
- move.l PLR1s_xspdval,d6
- move.l PLR1s_zspdval,d7
-
- neg.l d6
- ble.s .nobug1
- asr.l #1,d6
- add.l #1,d6
- bra.s .bug1
- .nobug1
- asr.l #1,d6
- .bug1:
-
- neg.l d7
- ble.s .nobug2
- asr.l #1,d7
- add.l #1,d7
- bra.s .bug2
- .nobug2
- asr.l #1,d7
- .bug2:
-
- move.w ymouse,d3
- sub.w oldymouse,d3
- add.w d3,oldymouse
- asr.w #1,d3
- cmp.w #50,d3
- ble.s nofastfor
- move.w #50,d3
- nofastfor:
- cmp.w #-50,d3
- bge.s nofastback
- move.w #-50,d3
- nofastback:
-
- tst.b PLR1_Ducked
- beq.s .nohalve
- asr.w #1,d3
- .nohalve
-
- move.w d3,d2
- asl.w #4,d2
- move.w d2,d1
-
- move.w d1,d2
- add.w PLR1_bobble,d1
- and.w #8190,d1
- move.w d1,PLR1_bobble
- add.w PLR1_clumptime,d2
- move.w d2,d1
- and.w #4095,d2
- move.w d2,PLR1_clumptime
- and.w #-4096,d1
- beq.s .noclump
-
- bsr PLR1clump
-
- .noclump
-
-
- move.w PLR1s_sinval,d1
- move.w PLR1s_cosval,d2
-
- move.w d2,d4
- move.w d1,d5
- muls lrs,d4
- muls lrs,d5
-
-
- muls d3,d2
- muls d3,d1
- sub.l d4,d1
- add.l d5,d2
-
- sub.l d1,d6
- sub.l d2,d7
- add.l d6,PLR1s_xspdval
- add.l d7,PLR1s_zspdval
- move.l PLR1s_xspdval,d6
- move.l PLR1s_zspdval,d7
- add.l d6,PLR1s_xoff
- add.l d7,PLR1s_zoff
-
- tst.b PLR1_fire
- beq.s .firenotpressed
- ; fire was pressed last time.
- btst #6,$bfe001
- bne.s .firenownotpressed
- ; fire is still pressed this time.
- st PLR1_fire
- bra .doneplr1
-
- .firenownotpressed:
- ; fire has been released.
- clr.b PLR1_fire
- bra .doneplr1
-
- .firenotpressed
-
- ; fire was not pressed last frame...
-
- btst #6,$bfe001
- ; if it has still not been pressed, go back above
- bne.s .firenownotpressed
- ; fire was not pressed last time, and was this time, so has
- ; been clicked.
- st PLR1_clicked
- st PLR1_fire
-
- .doneplr1:
-
- bsr PLR1_fall
-
- rts
-
- PLR1_follow_path:
-
- move.l pathpt,a0
- move.w (a0),d1
- move.w d1,PLR1s_xoff
- move.w 2(a0),d1
- move.w d1,PLR1s_zoff
- move.w 4(a0),d0
- add.w d0,d0
- and.w #8190,d0
- move.w d0,PLR1_angpos
-
- move.w TempFrames,d0
- asl.w #3,d0
- adda.w d0,a0
-
- cmp.l #endpath,a0
- blt notrestartpath
- move.l #Path,a0
- notrestartpath:
- move.l a0,pathpt
-
- rts
-
- PLR1_alwayskeys
- move.l #KeyMap,a5
- moveq #0,d7
- move.b operate_key,d7
- move.b (a5,d7.w),d1
- beq.s nottapped
- tst.b OldSpace
- bne.s nottapped
- st PLR1_SPCTAP
- nottapped:
- move.b d1,OldSpace
-
- move.b duck_key,d7
- tst.b (a5,d7.w)
- beq.s notduck
- clr.b (a5,d7.w)
- move.l #playerheight,PLR1s_targheight
- not.b PLR1_Ducked
- beq.s notduck
- move.l #playercrouched,PLR1s_targheight
- notduck:
-
- move.l PLR1_Roompt,a4
- move.l ToZoneFloor(a4),d0
- sub.l ToZoneRoof(a4),d0
- tst.b PLR1_StoodInTop
- beq.s usebottom
- move.l ToUpperFloor(a4),d0
- sub.l ToUpperRoof(a4),d0
- usebottom:
-
- cmp.l #playerheight+3*1024,d0
- bgt.s oktostand
- st PLR1_Ducked
- move.l #playercrouched,PLR1s_targheight
- oktostand:
-
- move.l PLR1s_height,d0
- move.l PLR1s_targheight,d1
- cmp.l d1,d0
- beq.s noupordown
- bgt.s crouch
- add.l #1024,d0
- bra noupordown
- crouch:
- sub.l #1024,d0
- noupordown:
- move.l d0,PLR1s_height
-
- tst.b $27(a5)
- beq.s notselkey
- st PLR1KEYS
- clr.b PLR1PATH
- clr.b PLR1MOUSE
- clr.b PLR1JOY
- notselkey:
-
- tst.b $26(a5)
- beq.s notseljoy
- clr.b PLR1KEYS
- clr.b PLR1PATH
- clr.b PLR1MOUSE
- st PLR1JOY
- notseljoy:
-
- tst.b $37(a5)
- beq.s notselmouse
- clr.b PLR1KEYS
- clr.b PLR1PATH
- st PLR1MOUSE
- clr.b PLR1JOY
- notselmouse:
-
- lea 1(a5),a4
- lea PLR1_GunData,a3
- move.l #GUNVALS,a2
- move.w #4,d1
- pickweap
- move.b (a2)+,d0 ; number of gun
- tst.b (a4)+
- beq.s notgotweap
- moveq #0,d2
- move.b d0,d2
- asl.w #5,d2
- tst.b 7(a3,d2.w)
- beq.s notgotweap
- move.b d0,PLR1_GunSelected
- notgotweap
- dbra d1,pickweap
-
- tst.b $43(a5)
- beq.s .notswapscr
- tst.b lastscr
- bne.s .notswapscr2
- st lastscr
-
- not.b BIGsmall
- beq.s .dosmall
-
- jsr putinlargescr
- bra .notswapscr2
-
- .dosmall:
- jsr putinsmallscr
- bra .notswapscr2
-
- .notswapscr:
- clr.b lastscr
- .notswapscr2:
-
- rts
-
- GUNVALS:
- ; machine gun
- dc.b 0
- ; shotgun
- dc.b 7
- ; plasma
- dc.b 1
- ; grenade
- dc.b 4
- ; rocket
- dc.b 2
-
- BIGsmall: dc.b 0
- lastscr: dc.b 0
- even
-
- PLR1_keyboard_control:
-
- move.l #SineTable,a0
-
- jsr PLR1_alwayskeys
- move.l #KeyMap,a5
-
- move.w PLR1s_angpos,d0
- move.w PLR1s_angspd,d3
- move.w #35,d1
- move.w #2,d2
- moveq #0,d7
- move.b run_key,d7
- tst.b (a5,d7.w)
- beq.s nofaster
- move.w #60,d1
- move.w #3,d2
- nofaster:
- tst.b PLR1_Ducked
- beq.s .nohalve
- asr.w #1,d2
- .nohalve
-
- moveq #0,d4
-
- move.w d3,d5
- add.w d5,d5
- add.w d5,d3
- asr.w #2,d3
- bge.s .nneg
- addq #1,d3
- .nneg:
-
- move.b turn_left_key,templeftkey
- move.b turn_right_key,temprightkey
- move.b sidestep_left_key,tempslkey
- move.b sidestep_right_key,tempsrkey
-
- move.b force_sidestep_key,d7
- tst.b (a5,d7.w)
- beq .noalwayssidestep
-
- move.b templeftkey,tempslkey
- move.b temprightkey,tempsrkey
- move.b #255,templeftkey
- move.b #255,temprightkey
-
- .noalwayssidestep:
-
-
- move.b templeftkey,d7
- tst.b (a5,d7.w)
- beq.s noleftturn
- sub.w #10,d3
- noleftturn
- move.l #KeyMap,a5
- move.b temprightkey,d7
- tst.b (a5,d7.w)
- beq.s norightturn
- add.w #10,d3
- norightturn
-
- cmp.w d1,d3
- ble.s .okrspd
- move.w d1,d3
- .okrspd:
- neg.w d1
- cmp.w d1,d3
- bge.s .oklspd
- move.w d1,d3
- .oklspd:
-
- add.w d3,d0
- add.w d3,d0
- move.w d3,PLR1s_angspd
-
- move.b tempslkey,d7
- tst.b (a5,d7.w)
- beq.s noleftslide
- add.w d2,d4
- add.w d2,d4
- asr.w #1,d4
- noleftslide
- move.l #KeyMap,a5
- move.b tempsrkey,d7
- tst.b (a5,d7.w)
- beq.s norightslide
- add.w d2,d4
- add.w d2,d4
- asr.w #1,d4
- neg.w d4
- norightslide
-
- noslide:
-
- and.w #8191,d0
- move.w d0,PLR1s_angpos
-
- move.w (a0,d0.w),PLR1s_sinval
- adda.w #2048,a0
- move.w (a0,d0.w),PLR1s_cosval
-
- move.l PLR1s_xspdval,d6
- move.l PLR1s_zspdval,d7
-
- neg.l d6
- ble.s .nobug1
- asr.l #3,d6
- add.l #1,d6
- bra.s .bug1
- .nobug1
- asr.l #3,d6
- .bug1:
-
- neg.l d7
- ble.s .nobug2
- asr.l #3,d7
- add.l #1,d7
- bra.s .bug2
- .nobug2
- asr.l #3,d7
- .bug2:
-
- moveq #0,d3
-
- moveq #0,d5
- move.b forward_key,d5
- tst.b (a5,d5.w)
- beq.s noforward
- neg.w d2
- move.w d2,d3
-
- noforward:
- move.b backward_key,d5
- tst.b (a5,d5.w)
- beq.s nobackward
- move.w d2,d3
- nobackward:
-
- move.w d3,d2
- asl.w #6,d2
- move.w d2,d1
- ; add.w d2,d1
- ; add.w d2,d1
- move.w d1,d2
- add.w PLR1_bobble,d1
- and.w #8190,d1
- move.w d1,PLR1_bobble
- add.w PLR1_clumptime,d2
- move.w d2,d1
- and.w #4095,d2
- move.w d2,PLR1_clumptime
- and.w #-4096,d1
- beq.s .noclump
-
- bsr PLR1clump
-
- .noclump
-
-
- move.w PLR1s_sinval,d1
- muls d3,d1
- move.w PLR1s_cosval,d2
- muls d3,d2
-
- sub.l d1,d6
- sub.l d2,d7
- move.w PLR1s_sinval,d1
- muls d4,d1
- move.w PLR1s_cosval,d2
- muls d4,d2
- sub.l d2,d6
- add.l d1,d7
-
- add.l d6,PLR1s_xspdval
- add.l d7,PLR1s_zspdval
- move.l PLR1s_xspdval,d6
- move.l PLR1s_zspdval,d7
- add.l d6,PLR1s_xoff
- add.l d7,PLR1s_zoff
-
- move.b fire_key,d5
- tst.b PLR1_fire
- beq.s .firenotpressed
- ; fire was pressed last time.
- tst.b (a5,d5.w)
- beq.s .firenownotpressed
- ; fire is still pressed this time.
- st PLR1_fire
- bra .doneplr1
-
- .firenownotpressed:
- ; fire has been released.
- clr.b PLR1_fire
- bra .doneplr1
-
- .firenotpressed
-
- ; fire was not pressed last frame...
-
- tst.b (a5,d5.w)
- ; if it has still not been pressed, go back above
- beq.s .firenownotpressed
- ; fire was not pressed last time, and was this time, so has
- ; been clicked.
- st PLR1_clicked
- st PLR1_fire
-
- .doneplr1:
-
- bsr PLR1_fall
-
- rts
- passspace:
- ds.l 400
-
- PLR1_JoyStick_control:
-
- jsr _ReadJoy1
- bra PLR1_keyboard_control
-
- move.l #KeyMap,a5
- move.l #SineTable,a0
-
- btst #1,$dff00c
- sne d0
- btst #1,$dff00d
- sne d1
- btst #0,$dff00c
- sne d2
- btst #0,$dff00d
- sne d3
- moveq #0,d5
- move.b fire_key,d5
- btst #7,$bfe001
- seq (a5,d5.w)
-
- move.b turn_left_key,d5
- move.b d0,(a5,d5.w)
- move.b turn_right_key,d5
- move.b d1,(a5,d5.w)
- eor.b d0,d2
- move.b forward_key,d5
- move.b d2,(a5,d5.w)
- eor.b d1,d3
- move.b backward_key,d5
- move.b d3,(a5,d5.w)
- bra PLR1_keyboard_control
-
- jsr PLR1_alwayskeys
-
- move.w PLR1s_angpos,d0
- move.w #70,d1
- move.w #7,d2
- tst.b $61(a5)
- beq.s .nofaster
- move.w #120,d1
- move.w #10,d2
- .nofaster:
-
- tst.b PLR1_Ducked
- beq.s .nohalve
- asr.w #1,d2
- .nohalve:
-
- moveq #0,d4
- ; tst.b $67(a5)
- ; bne.s slidelr
-
- tst.b $4f(a5)
- beq.s .noleftturn
- sub.w d1,d0
- .noleftturn
- move.l #KeyMap,a5
- tst.b $4e(a5)
- beq.s .norightturn
- add.w d1,d0
- .norightturn
- ; bra.s noslide
-
- .slidelr:
- tst.b $39(a5)
- beq.s .noleftslide
- move.w d2,d4
- asr.w #1,d4
- .noleftslide
- move.l #KeyMap,a5
- tst.b $3a(a5)
- beq.s .norightslide
- sub.w d2,d4
- asr.w #1,d4
- .norightslide
-
- .noslide:
-
- and.w #8191,d0
- move.w d0,PLR1s_angpos
-
- move.w (a0,d0.w),PLR1s_sinval
- adda.w #2048,a0
- move.w (a0,d0.w),PLR1s_cosval
-
- move.l PLR1s_xspdval,d6
- move.l PLR1s_zspdval,d7
-
- neg.l d6
- ble.s .nobug1
- asr.l #1,d6
- add.l #1,d6
- bra.s .bug1
- .nobug1
- asr.l #1,d6
- .bug1:
-
- neg.l d7
- ble.s .nobug2
- asr.l #1,d7
- add.l #1,d7
- bra.s .bug2
- .nobug2
- asr.l #1,d7
- .bug2:
-
- moveq #0,d3
-
- tst.b $4c(a5)
- beq.s .noforward
- neg.w d2
- move.w d2,d3
- .noforward:
- tst.b $4d(a5)
- beq.s .nobackward
- move.w d2,d3
- .nobackward:
-
- move.w d3,d2
- asl.w #6,d2
- move.w d2,d1
- ; add.w d2,d1
- ; add.w d2,d1
- move.w d1,d2
- add.w PLR1_bobble,d1
- and.w #8190,d1
- move.w d1,PLR1_bobble
- add.w PLR1_clumptime,d2
- move.w d2,d1
- and.w #4095,d2
- move.w d2,PLR1_clumptime
- and.w #-4096,d1
- beq.s .noclump
-
- bsr PLR1clump
-
- .noclump
-
-
- and.w #8190,d1
- move.w d1,PLR1_bobble
-
- move.w PLR1s_sinval,d1
- muls d3,d1
- move.w PLR1s_cosval,d2
- muls d3,d2
-
- sub.l d1,d6
- sub.l d2,d7
- move.w PLR1s_sinval,d1
- muls d4,d1
- move.w PLR1s_cosval,d2
- muls d4,d2
- sub.l d2,d6
- add.l d1,d7
-
- add.l d6,PLR1s_xspdval
- add.l d7,PLR1s_zspdval
- move.l PLR1s_xspdval,d6
- move.l PLR1s_zspdval,d7
- add.l d6,PLR1s_xoff
- add.l d7,PLR1s_zoff
-
- tst.b PLR1_fire
- beq.s .firenotpressed
- ; fire was pressed last time.
- tst.b $65(a5)
- beq.s .firenownotpressed
- ; fire is still pressed this time.
- st PLR1_fire
- bra .doneplr1
-
- .firenownotpressed:
- ; fire has been released.
- clr.b PLR1_fire
- bra .doneplr1
-
- .firenotpressed
-
- ; fire was not pressed last frame...
-
- tst.b $65(a5)
- ; if it has still not been pressed, go back above
- beq.s .firenownotpressed
- ; fire was not pressed last time, and was this time, so has
- ; been clicked.
- st PLR1_clicked
- st PLR1_fire
-
- .doneplr1:
-
- move.l PLR1s_tyoff,d0
- move.l PLR1s_yoff,d1
- move.l PLR1s_yvel,d2
- sub.l d1,d0
- bgt.s .aboveground
- sub.l #512,d2
- blt.s .notfast
- move.l #0,d2
- .notfast:
- add.l d2,d1
- sub.l d2,d0
- blt.s .pastitall
- move.l #0,d2
- add.l d0,d1
- bra.s .pastitall
-
- .aboveground:
- add.l d2,d1
- add.l #1024,d2
- .pastitall:
-
- move.l d2,PLR1s_yvel
- move.l d1,PLR1s_yoff
-
- rts
-
-
- PLR1_clumptime: dc.w 0
-
- PLR1clump:
-
- movem.l d0-d7/a0-a6,-(a7)
- move.l PLR1_Roompt,a0
- move.w ToFloorNoise(a0),d0
-
- move.l ToZoneWater(a0),d1
- cmp.l ToZoneFloor(a0),d1
- bge.s THERESNOWATER
-
- cmp.l PLR1_yoff,d1
- blt.s THERESNOWATER
-
- move.w #6-23,d0
-
- THERESNOWATER:
-
- tst.b PLR1_StoodInTop
- beq.s .okinbot
- move.w ToUpperFloorNoise(a0),d0
- .okinbot:
-
- add.w #23,d0
-
- move.w d0,Samplenum
- move.w #0,Noisex
- move.w #100,Noisez
- move.w #80,Noisevol
- move.b #$f9,IDNUM
- clr.b notifplaying
- jsr MakeSomeNoise
-
- movem.l (a7)+,d0-d7/a0-a6
-
- rts
-